#include <stdio.h>
#include <fcntl.h>    /* For O_* constants */
#include <sys/stat.h> /* For mode constants */
#include <semaphore.h>
// sem_t *sem_open(const char *name, int oflag);   name：有名信号量的名字，要求必须以"7"开头，例如"/sem_test”->存在于/dev/shm目录下
// sem_t *sem_open(const char *name, int oflag,mode_t mode, unsigned int value);
// p操作 申请资源 int sem_wait(sem_t *sem);  -> 如果减不了1，这个函数就会阻塞
// v操作 释放资源 int sem_post(sem_t *sem); -> 一定可以+1的，绝对不会阻塞
// int sem_close(sem_t *sem);  -> 关闭信号量
// int sem_unlink(const char *name); -> 删除信号量

int main()
{
    sem_t *sem_addr = sem_open("/sem_test", O_CREAT, 0777, 2);
    printf("sem_addr = %p\n", sem_addr);

    // v操作
    sem_post(sem_addr);
    printf("v操作成功\n");

    sem_post(sem_addr);
    printf("v操作成功\n");
    
    printf("end\n");
    return 0;
}